/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.bookshop.dao;

import com.bookshop.entity.Author;
import com.bookshop.entity.Book;
import com.bookshop.entity.Collection;
import com.bookshop.entity.Publisher;
import com.bookshop.entity.Serie;
import com.bookshop.entity.Type;
import java.util.List;

/**
 *
 * @author Thibault
 */
public interface IDaoBook {
    
    /**
     * Liste de tous les livres
     * @return Une liste d'objets de type Book
     */
    public List<Book> getAllBooks();

    /**
     * Obtient le livre pour l'ISBN spécifié
     * @param isbn : ISBN du livre
     * @return Un objet de type Book
     */
    public Book getBookByISBN(String isbn);
    
     /**
     * Obtient une liste de livres correspondant à un titre recherché
     * @param title : le titre du livre recherché
     * @return Une liste d'objets de type Book
     */
    public List<Book> getAllBooksByTitle(String title);
    
     /**
     * Obtient une liste de livres correspondant à une série recherchée
     * @param serie : la série recherchée
     * @return Une liste d'objets de type Book
     */
    public List<Book> getAllBooksBySerie(Serie serie);
         
    /**
     * Obtient une liste de livres correspondant à un auteur recherché
     * @param author : l'auteur recherché
     * @return Une liste d'objets de type Book
     */
    public List<Book> getAllBooksByAuthor(Author author);
    
    /**
     * Obtient une liste de livres correspondant à une collection recherchée
     * @param collection : la collection recherchée
     * @return Une liste d'objets de type Book
     */
    public List<Book> getAllBooksByCollection(Collection collection);
    
    /**
     * Obtient une liste de livres correspondant à un éditeur recherché
     * @param publisher : Id de l'éditeur recherchée
     * @return Une liste d'objets de type Book
     */
    public List<Book> getAllBooksByPublisher(Publisher publisher);
    
        /**
     * Liste de tous les livres de la catégorie identifiée
     * @param categoryId : Id de la catégorie
     * @return Une liste d'objets de type Book
     */
    public List<Book> getAllBooksByCategoryId(int categoryId);
    
    
    public List<Book> getAllBooksByType(Type t);
    
}
